(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
din(der(plus(X, Y))) → u21(din(der(X)), X, Y)
u21(dout(DX), X, Y) → u22(din(der(Y)), X, Y, DX)
u22(dout(DY), X, Y, DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)), X)
u41(dout(DX), X) → u42(din(der(DX)), X, DX)
u42(dout(DDX), X, DX) → dout(DDX)
Rewrite Strategy: FULL
(1) RenamingProof (EQUIVALENT transformation)
Renamed function symbols to avoid clashes with predefined symbol.
(2) Obligation:
Runtime Complexity Relative TRS:
The TRS R consists of the following rules:
din(der(plus(X, Y))) → u21(din(der(X)), X, Y)
u21(dout(DX), X, Y) → u22(din(der(Y)), X, Y, DX)
u22(dout(DY), X, Y, DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)), X)
u41(dout(DX), X) → u42(din(der(DX)), X, DX)
u42(dout(DDX), X, DX) → dout(DDX)
S is empty.
Rewrite Strategy: FULL
(3) SlicingProof (LOWER BOUND(ID) transformation)
Sliced the following arguments:
u21/1
u22/1
u22/2
u41/1
u42/1
u42/2
(4) Obligation:
Runtime Complexity Relative TRS:
The TRS R consists of the following rules:
din(der(plus(X, Y))) → u21(din(der(X)), Y)
u21(dout(DX), Y) → u22(din(der(Y)), DX)
u22(dout(DY), DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)))
u41(dout(DX)) → u42(din(der(DX)))
u42(dout(DDX)) → dout(DDX)
S is empty.
Rewrite Strategy: FULL
(5) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)
Infered types.
(6) Obligation:
TRS:
Rules:
din(der(plus(X, Y))) → u21(din(der(X)), Y)
u21(dout(DX), Y) → u22(din(der(Y)), DX)
u22(dout(DY), DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)))
u41(dout(DX)) → u42(din(der(DX)))
u42(dout(DDX)) → dout(DDX)
Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times
(7) OrderProof (LOWER BOUND(ID) transformation)
Heuristically decided to analyse the following defined symbols:
din,
u41They will be analysed ascendingly in the following order:
din = u41
(8) Obligation:
TRS:
Rules:
din(
der(
plus(
X,
Y))) →
u21(
din(
der(
X)),
Y)
u21(
dout(
DX),
Y) →
u22(
din(
der(
Y)),
DX)
u22(
dout(
DY),
DX) →
dout(
plus(
DX,
DY))
din(
der(
times(
X,
Y))) →
u31(
din(
der(
X)),
X,
Y)
u31(
dout(
DX),
X,
Y) →
u32(
din(
der(
Y)),
X,
Y,
DX)
u32(
dout(
DY),
X,
Y,
DX) →
dout(
plus(
times(
X,
DY),
times(
Y,
DX)))
din(
der(
der(
X))) →
u41(
din(
der(
X)))
u41(
dout(
DX)) →
u42(
din(
der(
DX)))
u42(
dout(
DDX)) →
dout(
DDX)
Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times
Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))
The following defined symbols remain to be analysed:
u41, din
They will be analysed ascendingly in the following order:
din = u41
(9) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol u41.
(10) Obligation:
TRS:
Rules:
din(
der(
plus(
X,
Y))) →
u21(
din(
der(
X)),
Y)
u21(
dout(
DX),
Y) →
u22(
din(
der(
Y)),
DX)
u22(
dout(
DY),
DX) →
dout(
plus(
DX,
DY))
din(
der(
times(
X,
Y))) →
u31(
din(
der(
X)),
X,
Y)
u31(
dout(
DX),
X,
Y) →
u32(
din(
der(
Y)),
X,
Y,
DX)
u32(
dout(
DY),
X,
Y,
DX) →
dout(
plus(
times(
X,
DY),
times(
Y,
DX)))
din(
der(
der(
X))) →
u41(
din(
der(
X)))
u41(
dout(
DX)) →
u42(
din(
der(
DX)))
u42(
dout(
DDX)) →
dout(
DDX)
Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times
Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))
The following defined symbols remain to be analysed:
din
They will be analysed ascendingly in the following order:
din = u41
(11) RewriteLemmaProof (LOWER BOUND(ID) transformation)
Proved the following rewrite lemma:
din(
gen_plus:der:times3_0(
+(
2,
n29_0))) →
*4_0, rt ∈ Ω(n29
0)
Induction Base:
din(gen_plus:der:times3_0(+(2, 0)))
Induction Step:
din(gen_plus:der:times3_0(+(2, +(n29_0, 1)))) →RΩ(1)
u41(din(der(gen_plus:der:times3_0(+(1, n29_0))))) →IH
u41(*4_0)
We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).
(12) Complex Obligation (BEST)
(13) Obligation:
TRS:
Rules:
din(
der(
plus(
X,
Y))) →
u21(
din(
der(
X)),
Y)
u21(
dout(
DX),
Y) →
u22(
din(
der(
Y)),
DX)
u22(
dout(
DY),
DX) →
dout(
plus(
DX,
DY))
din(
der(
times(
X,
Y))) →
u31(
din(
der(
X)),
X,
Y)
u31(
dout(
DX),
X,
Y) →
u32(
din(
der(
Y)),
X,
Y,
DX)
u32(
dout(
DY),
X,
Y,
DX) →
dout(
plus(
times(
X,
DY),
times(
Y,
DX)))
din(
der(
der(
X))) →
u41(
din(
der(
X)))
u41(
dout(
DX)) →
u42(
din(
der(
DX)))
u42(
dout(
DDX)) →
dout(
DDX)
Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times
Lemmas:
din(gen_plus:der:times3_0(+(2, n29_0))) → *4_0, rt ∈ Ω(n290)
Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))
The following defined symbols remain to be analysed:
u41
They will be analysed ascendingly in the following order:
din = u41
(14) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)
Could not prove a rewrite lemma for the defined symbol u41.
(15) Obligation:
TRS:
Rules:
din(
der(
plus(
X,
Y))) →
u21(
din(
der(
X)),
Y)
u21(
dout(
DX),
Y) →
u22(
din(
der(
Y)),
DX)
u22(
dout(
DY),
DX) →
dout(
plus(
DX,
DY))
din(
der(
times(
X,
Y))) →
u31(
din(
der(
X)),
X,
Y)
u31(
dout(
DX),
X,
Y) →
u32(
din(
der(
Y)),
X,
Y,
DX)
u32(
dout(
DY),
X,
Y,
DX) →
dout(
plus(
times(
X,
DY),
times(
Y,
DX)))
din(
der(
der(
X))) →
u41(
din(
der(
X)))
u41(
dout(
DX)) →
u42(
din(
der(
DX)))
u42(
dout(
DDX)) →
dout(
DDX)
Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times
Lemmas:
din(gen_plus:der:times3_0(+(2, n29_0))) → *4_0, rt ∈ Ω(n290)
Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))
No more defined symbols left to analyse.
(16) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
din(gen_plus:der:times3_0(+(2, n29_0))) → *4_0, rt ∈ Ω(n290)
(17) BOUNDS(n^1, INF)
(18) Obligation:
TRS:
Rules:
din(
der(
plus(
X,
Y))) →
u21(
din(
der(
X)),
Y)
u21(
dout(
DX),
Y) →
u22(
din(
der(
Y)),
DX)
u22(
dout(
DY),
DX) →
dout(
plus(
DX,
DY))
din(
der(
times(
X,
Y))) →
u31(
din(
der(
X)),
X,
Y)
u31(
dout(
DX),
X,
Y) →
u32(
din(
der(
Y)),
X,
Y,
DX)
u32(
dout(
DY),
X,
Y,
DX) →
dout(
plus(
times(
X,
DY),
times(
Y,
DX)))
din(
der(
der(
X))) →
u41(
din(
der(
X)))
u41(
dout(
DX)) →
u42(
din(
der(
DX)))
u42(
dout(
DDX)) →
dout(
DDX)
Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → dout
u42 :: dout → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times
Lemmas:
din(gen_plus:der:times3_0(+(2, n29_0))) → *4_0, rt ∈ Ω(n290)
Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))
No more defined symbols left to analyse.
(19) LowerBoundsProof (EQUIVALENT transformation)
The lowerbound Ω(n1) was proven with the following lemma:
din(gen_plus:der:times3_0(+(2, n29_0))) → *4_0, rt ∈ Ω(n290)
(20) BOUNDS(n^1, INF)